在router裡面新增一個更新url,
Route::get('/update',function(){
$updated = DB::update('update news set title = "更新最新消息" where id = ?',[1]);
return $updated;
});
更新完後再去資料庫看看,title已經變了,那就代表成功囉
在router裡面新增一個更新url,
Route::get('/delete',function(){
$deleted = DB::delete('delete from news where id = ?',[1]);
return $deleted;
});
執行完以後,資料確實被刪了
現在來新增一個news的model,來讓model變成我們的中介,不用再寫原生的sql語法,現在介紹的語法會比原生好理解的多,但是sql還是很重要的,如果是初學的話,還是建議要都搞懂,再來使用ORM會比較能夠理解為什麼是這樣做的。
先在終端機中打上下面的語法,接著就可以在專案的app目錄底下去找到news.php的檔案,開起來看看裡面長怎樣
//一般建議model名稱會是單數,開頭是大寫會比較好
php artisan make:model News
model很厲害,預設會去抓你名稱的複數為資料表,那如果我們用了覆數的名稱怎麼辦呢?可以打下面的程式碼指定特定的資料表,下面的語法會去抓到news的資料表。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $table = 'news';
}
接著到route的檔案中,在上面要先引入News的model才能使用,News::all()的意思,會撈到news裡面所有的資料,因為是all,那就一定是陣列,再使用foreach來把每一筆的title印出來。
use App\News;
Route::get('/read',function(){
$posts = News::all();
foreach($posts as $post){
return $post->title;
};
});
剛剛是搜尋所有的資料,那現在來看看怎麼尋找特定的資料,這邊把剛剛all()改成find()裡面的參數是id的數字,這樣就可以把他回傳試試看
Route::get('/find',function(){
$post = News::find(1);
return $post;
});
顯示出來的畫面會像這樣,如果是使用chrome的朋友,建議可以extension可以使用json Formatter來看資料,而不會讓資料都是一大坨的文字,看起來也舒服許多。
{
"id": 1,
"title": "最新消息1",
"description": "最新消息1",
"created_at": null,
"updated_at": null
}